home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / VarDef.cpp < prev    next >
C/C++ Source or Header  |  1998-03-15  |  1KB  |  62 lines

  1. #include "VarDef.h"
  2. #include "ClassDef.h"
  3. #include "ParseBC.h"
  4.  
  5.  
  6. VarDef::VarDef( char *name, char *sgi, short sgilen, ClassDef *cld, unsigned short sw ) : InterDef( name, 0, cld, sw ) {
  7.  
  8.     char *p = sgi;
  9.     short f;
  10.     
  11.     ParType[0][0] = 0;
  12.     ParType[1][0] = 0;
  13.     ParType[2][0] = 0;
  14.  
  15.     for( f = 0; f< sgilen; f++, p++ ) {
  16.         switch( *p ) {
  17.             case 'S': switches |= SW_SET; break;
  18.             case 'G': switches |= SW_GET; break;
  19.             case 'I': switches |= SW_INIT; break;
  20.         }
  21.     }
  22.     
  23. }
  24.  
  25. unsigned long VarDef::GetTagVal( void )
  26. {
  27.  
  28.     return (InterDef::GetTagVal() ^ (unsigned long)'A');
  29.  
  30. }
  31.  
  32. void VarDef::SetParType( unsigned short sw, char *par, short len )
  33. {
  34.     short i, l;
  35.     
  36.     l = len ? len : strlen( par );
  37.     
  38.     for( i = 0; i < 3; i++ ) {
  39.         if( sw & (1<<(11+i)) ) {
  40.             memcpy( ParType[i], par, l );
  41.             ParType[i][l] = 0;
  42.         }
  43.     }
  44.  
  45.  
  46. }
  47.  
  48. char *VarDef::SGIName( unsigned short sw )
  49. {
  50.     if( switches & SW_SAMESI ) return "SI";
  51.     if( sw & SW_INIT ) return "Init";
  52.     return "Set";
  53.  
  54. }
  55.  
  56. char *VarDef::GetParType( unsigned short sw )
  57. {
  58.     if( sw & SW_INIT ) return ParType[M_INIT];
  59.     return ParType[M_SET];
  60.  
  61. }
  62.